package com.hanserwei.mapper;

import com.hanserwei.entity.Employees;
import com.hanserwei.entity.PageBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EmployeesMapper {
    /**
     * 根据主键删除员工记录
     *
     * @param id 员工ID
     * @return 删除的记录数
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 插入完整的员工记录
     *
     * @param record 员工实体对象
     * @return 插入的记录数
     */
    int insert(Employees record);

    /**
     * 选择性插入员工记录（只插入非空字段）
     *
     * @param record 员工实体对象
     * @return 插入的记录数
     */
    int insertSelective(Employees record);

    /**
     * 根据主键查询员工记录
     *
     * @param id 员工ID
     * @return 员工实体对象
     */
    Employees selectByPrimaryKey(Integer id);

    /**
     * 根据主键选择性更新员工记录（只更新非空字段）
     *
     * @param record 员工实体对象
     * @return 更新的记录数
     */
    int updateByPrimaryKeySelective(Employees record);

    /**
     * 根据主键更新完整的员工记录
     *
     * @param record 员工实体对象
     * @return 更新的记录数
     */
    int updateByPrimaryKey(Employees record);

    List<Employees> selectBySelective(Employees record);

    List<Employees> selectByIds(List<Integer> ids);

    void insertBatch(List<Employees> records);

    Long countCondition(@Param("records") Employees records);

    List<Employees> selectByPage(@Param("pageSize") Integer pageSize, @Param("records") Employees records, @Param("offset") Integer offset);

    List<Employees> selectByPageBean(@Param("records") Employees records);
}